<?php
include_once 'Controlador/Error.php';	
include_once 'Modelo/DA_ArchReporte.php';

class DA_ArchReporteGestor{
	
	private $rutaDirectorio = null;	
	private $nomArchsReporte = null;
	private $arrObjArchReporte = null;
	private $error = null;
	
	public function DA_ArchReporteGestor($rutaDirectorio){		
		$this->rutaDirectorio = $rutaDirectorio;		
		$this->obtenerNomArchsReporte();		
		if(!$this->hayError()){			
			$this->obtenerObjsArchReporte();
		}
	}

	private function obtenerNomArchsReporte(){
		if(is_dir($this->rutaDirectorio)){					
			$this->nomArchsReporte = array();
			if ($handle = opendir($this->rutaDirectorio)) {
				while (false !== ($archivo = readdir($handle))) {				
					if ($archivo != "." && $archivo != "..") {
						$rutaArchivo = $this->rutaDirectorio.'/'.$archivo;
						if(is_file($rutaArchivo)){
							$partes_ruta = pathinfo($rutaArchivo);
							if($partes_ruta['extension']=='txt'){							
								$this->nomArchsReporte[] = $archivo;																					
							}						
						}
		        	}
				}				
			}
			else{
				$this->error = new Error(TipoError::PHP_SIST_ARCH_OPENDIR,'Ruta:'.$this->rutaDirectorio);
			}
			closedir($handle);			
			if(empty($this->nomArchsReporte)){
				$this->error = new Error(TipoError::PRINCIPAL_SIN_ARCHS_RPT,'Ruta:'.$this->rutaDirectorio);								
			}
			else{
				$this->error = new Error(TipoError::SIN_ERRORES);
			}
		}
	}	
	
	private function obtenerObjsArchReporte() {
		$this->arrObjArchReporte = array();
		foreach ($this->nomArchsReporte as $nomArchReporte) {
			$arch = new DA_ArchReporte($this->rutaDirectorio.'/'.$nomArchReporte);
			if(!$arch->hayError()){
				$this->arrObjArchReporte[]=$arch;
			}		
			else{
				$this->error = $arch->getError();
				break;
			}
		}
	}
	
	public function hayError(){
		return $this->error->hayError();				
	}
	
	public function getArrObjArchReporte() {
		return $this->arrObjArchReporte;
	}
	
	public function getError() {
		return $this->error;
	}
	
}